<!doctype html>
<html lang='en'>
    <head>
        <title>JS</title>
        <script>
            window.onload = function(){
                //6种数据类型
                //基本数据类型：string number boolean undefined null，复杂数据类型（引用数据类型）：数组 对象 函数
                var a;//此时a为undefined
                var obj = null;//null相当于一个空对象
                
                var str = 'abc';
                var num = 123;
                var bool = true;
                var und = undefined;
                var n = null;
                var arr = [];
                var obj = {};
                var func = function(){};

                console.log(typeof str);//检测对应的类型
                
                //三大类型，array object function
                //Array类型,有几种方式
                //第一种
                var arr = new Array();//使用构造函数
                arr[0] = 'a';
                arr[1] = 'b';
                var arr2 = new Array('x', 'y', 'z');
                //第二种,字面量表示法
                var arr3 = ['red', 'blue', 'yellow'];
                var arr4 = ['red', 19, 'yellow', {name:'abc', age:20}];

                //object类型
                //第一种new Object构造函数
                var person = new Object();
                person.name = 'sonia';
                person['age'] = 18;//person[age],age被理解为一个变量
                //第二种，字面量
                //1)简单字面量
                var person2 = {};
                person2.name = 'jack';
                person2.action = function(){
                    console.log(this.name);
                };
                //2)嵌套字面量
                //json属性名必须用双引号
                var person3 = {
                    "name a":"axs",//关键字 保留字 空格加引号 链接符号
                    name:'angela',
                    age:20,
                    action:function(){
                        console.log(this.name);
                    }
                };
                //第三种工厂方式
                function createObj(name){
                    var obj = new Object();//在方法中创建一个对象
                    obj.name = name;
                    obj.showName = function(){console.log(this.name)};
                    return obj;
                }
                var p = createObj('aa');
                p.showName();
                //第四种 构造函数 首字母大写 驼峰命令
                function CreateObj2(name){
                    this.name = name;//this指向对象的实例
                    this.showName = function(){console.log(this.name)};
                };
                var p2 = new C;reateObj2('admin')
                p2.showName();

                //function类型
                //函数声明,调用函数时可以在函数声明之前或之后
                function sum(a, b){
                    return a+b;
                };
                //函数表达式, 函数表达式必须在调用之前
                var sum2 = function(a, b){
                    return a+b;
                }


            };
        </script>
    </head>
    <body>

    </body>
</html>